package com.jvm.classloader;

import com.sun.org.apache.bcel.internal.generic.RETURN;
import org.aopalliance.intercept.Joinpoint;

import java.lang.instrument.Instrumentation;
import java.util.*;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class pre_MyProgram {




    /**
     * 该方法在main方法之前运行，与main方法运行在同一个JVM中
     * 并被同一个System ClassLoader装载
     * 被统一的安全策略(security policy)和上下文(context)管理
     *
     * @param agentOps
     * @param inst
     * @author SHANHY
     * @create  2016年3月30日
     */
    public static void    premain(String agentOps,Instrumentation inst){

        System.out.println("====premain 方法执行");
        System.out.println(agentOps);
    }

    /**
     * 如果不存在 premain(String agentOps, Instrumentation inst)
     * 则会执行 premain(String agentOps)
     *
     * @param agentOps
     * @author SHANHY
     * @create  2016年3月30日
     */
    public static void premain(String agentOps){

        System.out.println("====premain方法执行2====");
        System.out.println(agentOps);
    }

    public static S s(){
       S s = new S();
        try {
            s.s=10;
            return s;
        }finally {
            s.s = 100;
        }
    }

    public static void aaa(Boolean b){
        System.out.println(b);
    }

    public static void main(String[] args) {

        // TODO Auto-generated method stub
//
        List<String> list = Arrays.asList("abcd","swesad");

       list.stream()
                .flatMap(o -> Arrays.stream(o.split("")))
                .collect(HashMap::new,(o,p)->o.put(p,p),HashMap::putAll);
//                .forEach(o->System.out.println(o));


        Integer integer = Stream.of(2, 3, 4, 52, 33).reduce(new BinaryOperator<Integer>() {
            @Override
            public Integer apply(Integer a, Integer b) {
                return Integer.sum(a, b);
            }
        }).get();


        System.out.println((Uc) (a,b) ->1+2);

    }

}


class S{
    Integer s;
}